"use strict";

var util = require('util');
var BaseFilter = require('./FilterBase.js');

/**
 * 量词过滤,如 一天,一个个
 * @constructor
 */
function FilterQuantifier(__isDebug) {
  this.__isDebug = __isDebug;
  this.__passed = [];
  this.__blocked = [];
  this.number = '某每两几一二三四五六七八九十零百千万亿点半1234567890.壹贰叁肆伍陆柒捌玖拾佰仟';
  this.quan = '类组排幅个斤两楼点车天票时价只场颗把套开部头片岁周年月次张盒桌椅台位倍元心打条班路辆分双人块行种成名堆本道盘瓶杯盒趟门族笔篇';
  this.quan2 = ['分钟', '小时'];
  this.quan3 = ['大', '小'];
}
util.inherits(FilterQuantifier, BaseFilter);
module.exports = FilterQuantifier;

var theProto = FilterQuantifier.prototype;

/**
 * 判断规则 :前面几个数字为数字,后面跟一个量词(一天,1天,一百个),
 * 或跟2个同样的量词(一颗颗,1颗颗)，
 * 或 一大把，一小批
 * @param str
 */
theProto.detailFilter = function (str) {

  // case 1 一个 一百年 一千万个
  if (this.quan.indexOf(str.charAt(str.length - 1)) >= 0) {
    var i = str.length - 2;
    for (; i >= 0; i--) {
      if (this.number.indexOf(str.charAt(i)) < 0) {
        break;
      }
    }
    // i<0表明全是数字
    if (i < 0) return false;
  }

  // case 2 一百小时,一小时
  if (this.quan2.indexOf(str.substr(-2)) >= 0) {
    var i = str.length - 3;
    for (; i >= 0; i--) {
      if (this.number.indexOf(str.charAt(i)) < 0) {
        break;
      }
    }
    // i<0表明全是数字
    if (i < 0) return false;
  }

  // 一个个
  if (str.length == 3
    && str.charAt(2) === str.charAt(1)
    && this.number.indexOf(str.charAt(0)) >= 0
    && this.quan.indexOf(str.charAt(1)) >= 0) {
    return false;
  }

  // 一小批 每个人 TODO

  return true;
};

//
//var sample = ["一个", "一百年", "一千万个", "一颗颗"];
//new FilterQuantifier(true).__testScript(sample);

